import requests
import re
import os
headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36"
    }
def spider1():
    url = 'https://www.qiushibaike.com/imgrank/page/'
    ## 需要爬取多少页
    page = 2
    ## 循环请求每一个页面
    for i in range(0,page):
        ## 拼接url
        page_url = url + str(i+1)
        ## 请求当前页面的数据
        reponse = requests.get(url=page_url,headers=headers)
        ## 使用正则表达式获取当前是第几页
        current = re.findall('<span class="current" >\s(.*?)\s</span>',reponse.text)[0]
        print("********当前正在爬取"+current+"页********")
        ## 使用sava_page保存当前页面的所有图片
        sava_page(reponse,current)
    print("一共爬取"+str(page)+"页，如果需要爬取更多，请求page这个变量，目前最多13页。")
    print("爬取完毕")


'''
    函数名：sava_page
    需要参数：responde（一个页面的响应数据）,current(当前爬取的页面)
    方法功能：可以保存一个页面的所有图片（25张）
'''
def sava_page(reponse,current):
    ## 创建保存图片的文件夹，如果“糗事image”文件夹不存在则创建
    if not os.path.exists('./糗事image'):
        print("“糗事image”文件夹不存在，正在创建文件夹...")
        os.mkdir('./糗事image')
        print("创建成功！")
    ## 获取当前页面的所有图片url地址，以及把alt获取下来当做图片名字
    image_url_list = re.findall('<img src="(.*?)" alt="(.*?)" class="illustration" width="100%" height="auto">',reponse.text)
    ## 循环请求每张图片url，并保存
    for i in image_url_list:
        ## 拼接图片url
        image_url = "http:" + i[0]
        ## 文件名字
        name = i[1]
        ## 请求图片
        image = requests.get(url=image_url, headers=headers).content
        ## 文件名全称加地址
        fileName = "./糗事image/" + name + ".jpg"
        ## 保存文件
        with open(fileName, "wb") as fp:
            fp.write(image)
    print("*****写入第"+current+"完成****")

if __name__ == '__main__':
    spider1()